package ar.com.algotres.tpdos.persistence;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.StaxDriver;

public class Persistidor implements IPersistidor {

	private XStream xstream;

	public Persistidor() {
		xstream = new XStream(new StaxDriver());
		xstream.setMode(XStream.XPATH_RELATIVE_REFERENCES);
	}

	public Persistidor(List<CampoOmitido> camposOmitidos) {
		xstream = new XStream(new StaxDriver());
		xstream.setMode(XStream.XPATH_RELATIVE_REFERENCES);
		for (CampoOmitido campo : camposOmitidos) {
			xstream.omitField(campo.getClazz(), campo.getNombre());
		}
	}

	public void guardar(Object obj, String rutaArchivo) {
		try {
			xstream.toXML(obj, new FileOutputStream(new File(rutaArchivo)));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public Object recuperar(String rutaArchivo) {
		File archivo = new File(rutaArchivo);
		return xstream.fromXML(archivo);
	}
}
